﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sociedad.BL;
using Sociedad.DAL;

public partial class SOA_BandejaWF_Evaluar_SolicitudDesignacion : System.Web.UI.Page
{
    ParametroBL blParam = new ParametroBL();
    soa_SolicitudDesignacion beSDes = new soa_SolicitudDesignacion();
    SolicitudDesignacionBL blSDes = new SolicitudDesignacionBL();
    EntidadBL blEnt = new EntidadBL();
    WfDocumentoBL blDocWF = new WfDocumentoBL();
    Wfs_SeguimientoDocumento beDocWF = new Wfs_SeguimientoDocumento();

    String codSol;

    protected void Page_Load(object sender, EventArgs e)
    {
        try {
            if (!Page.IsPostBack)
            {
                if (Session[Constantes.session_Codigo_SolicitudDesignacion] != null)
                {
                    codSol = Session[Constantes.session_Codigo_SolicitudDesignacion].ToString();
                    Inicializar();
                }
                else
                {
                    lblMsj.Text = "Se produjo un error al intentar cargar los datos de la solicitud, volver a intentar.";
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;   
                }
            }
            else
            {
                lblMsj.Visible = false;
            }
        } 
        catch (Exception ex) 
        {
            lblMsj.Text = "Se produjo un error inesperado, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;   
        }
    }

    private void Inicializar()
    {
        // Cargar Tipo de Auditoria
        List<Soa_Parametros> lstParam1 = new List<Soa_Parametros>();
        Soa_Parametros param1 = new Soa_Parametros();
        param1.cprm_Codigo = "0";
        param1.cprm_Descripcion = "<Selec>";
        lstParam1 = blParam.Listar_Parametros("05");
        List<Soa_Parametros> lstParamNew1 = new List<Soa_Parametros>();
        lstParamNew1.Add(param1);
        for (int i = 1; i <= lstParam1.Count(); i++)
        {
            lstParamNew1.Add(lstParam1[i - 1]);
        }
        ddlTipAud.DataSource = lstParamNew1;
        ddlTipAud.DataTextField = "cprm_Descripcion";
        ddlTipAud.DataValueField = "cprm_Codigo";
        ddlTipAud.DataBind();

        beSDes = blSDes.Buscar_SolicitudDesignacion(codSol);
        if (beSDes != null)
        {
            hdfCodTipUO.Value = "3002";
            txtCodigoUO.Text = beSDes.csde_OrgAud;
            txtNombreUO.Text = blEnt.Buscar_Entidad(beSDes.csde_OrgAud).cent_Nombre;
            txtCodigo.Text = beSDes.csde_Codigo;
            txtFecha.Text = beSDes.dsde_FecSol.ToShortDateString();
            txtNombreEntAud.Text = beSDes.csde_EntAud + " - " + blEnt.Buscar_Entidad(beSDes.csde_EntAud).cent_Nombre;
            ddlTipAud.SelectedValue = beSDes.cprm_TipAud;
            txtIniExa.Text = beSDes.dsde_IniExa.ToShortDateString();
            txtFinExa.Text = beSDes.dsde_FinExa.ToShortDateString();
            txtPlazo.Text = beSDes.nsde_Plazo.ToString();
            txtCosAud.Text = beSDes.nsde_CosTot.ToString();
            txtObjetivo.Text = beSDes.csde_Objetivo;
            txtComentario.Text = beSDes.csde_Comentario;
        }

        //Cargar Opciones WF
        List<vw_Listar_OpcionesWF_CalificacionDoc> lstOp = new List<vw_Listar_OpcionesWF_CalificacionDoc>();
        vw_Listar_OpcionesWF_CalificacionDoc beOp = new vw_Listar_OpcionesWF_CalificacionDoc();
        beOp.cEstDestino = "0";
        beOp.cEstDestinoDes = "<Seleccionar>";
        lstOp = blDocWF.Listar_OpcionesWF_CalificacionDOC(Constantes.wfTipDoc_SolicitudDesignacion, beSDes.cprm_Estado);
        List<vw_Listar_OpcionesWF_CalificacionDoc> lstOp1 = new List<vw_Listar_OpcionesWF_CalificacionDoc>();
        lstOp1.Add(beOp);
        for (int i = 1; i <= lstOp.Count(); i++)
        {
            lstOp1.Add(lstOp[i - 1]);
        }
        ddlOpcion.DataSource = lstOp1;
        ddlOpcion.DataTextField = "cEstDestinoDes";
        ddlOpcion.DataValueField = "cEstDestino";
        ddlOpcion.SelectedValue = "0";
        ddlOpcion.DataBind();
    }

    protected void imbCerrar_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("BandejaEvaluador.aspx");
    }

    protected void imbAceptar_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            String cRpta = Validar_DatosWF();
            if (String.IsNullOrEmpty(cRpta))
            {
                modalPopupGuardar.Show();
            }
            else
            {
                lblMsj.Text = cRpta;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                lblMsj.Visible = true;
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error al intentar validar los datos, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;
        }
    }

    private String Validar_DatosWF()
    {
        if (ddlOpcion.SelectedValue.Equals("0"))
        {
            return "Seleccione una opción como resultado de la evaluación del documento.";
        }
        if (ddlOpcion.SelectedValue.Equals(Constantes.Estado_SolcitudDesignacion_Rechazado) && String.IsNullOrEmpty(txtComentarioWF.Text))
        {
            return "Está seleccionado <rechazar>, por lo tanto, debe de registrar comentarios motivo del rechazo.";
        }
        if (ddlOpcion.SelectedValue.Equals(Constantes.Estado_SolcitudDesignacion_PorSubsanar) && String.IsNullOrEmpty(txtComentarioWF.Text))
        {
            return "Está seleccionado <por subsanar>, por lo tanto, debe de registrar comentarios motivo a subsanar.";
        }

        return "";
    }

    protected void imbOK2_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            beDocWF.ctdo_Codigo = Constantes.wfTipDoc_SolicitudDesignacion;
            beDocWF.cedo_CodDoc = txtCodigo.Text;
            beDocWF.cprm_EnviaTipUO = Session[Constantes.session_CodTipUO].ToString();
            beDocWF.cent_EnviaUO = Session[Constantes.session_CodUniOrg].ToString();
            beDocWF.usr_EnviaUser = Session[Constantes.session_CodUsuario].ToString();
            beDocWF.csdo_Comentario = txtComentario.Text;
            beDocWF.cprm_Estado = ddlOpcion.SelectedValue;

            String[] cRpta = blDocWF.Registrar_DocumentoWF(beDocWF, 'S').Split('@');
            if (cRpta[0] == "1")
            {
                //Notificar
                NotificarUsuarioBL blNoti = new NotificarUsuarioBL();
                soa_NotificarUsuario beNoti = new soa_NotificarUsuario();

                beNoti.cprm_TipUO = hdfCodTipUO.Value;
                beNoti.cnot_CodUO = txtCodigoUO.Text;
                beNoti.ctdo_Codigo = Constantes.wfTipDoc_SolicitudDesignacion;
                beNoti.cprm_Estado = Constantes.Estado_SolcitudDesignacion_Aceptado;

                try
                {
                    String[] cRptaNoti = blNoti.EnviarNotificacion(beNoti, txtCodigo.Text).Split('@');
                    if (cRptaNoti[0] == "0")
                    {
                        modalPopupInfo.Show();
                    }
                }
                catch (Exception ex)
                {
                    modalPopupInfo.Show();
                }                

                Response.Redirect("BandejaEvaluador.aspx");
            }
            else
            {
                if (String.IsNullOrEmpty(cRpta[1]))
                {
                    lblMsj.Text = "Se produjo un error inesperado, cierre la ventana y vuelva a intentar enviar.";
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;
                }
                else
                {
                    lblMsj.Text = cRpta[1];
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;
                }
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error inesperado al intentar registrar el resultado de la evaluación, cierre la ventana y vuelva a intentar enviar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;
        }
    }
}